#ifndef _DYNAMIC_IMAGE_H_
#define _DYNAMIC_IMAGE_H_

#include "image.h"
#include "color.h"
   
///////////////////////////////////////////////////////
///	Container for an DynamicImage image.
/// When Tick is called, it will attempt to access the
/// next frame of the animation, and store it into the
/// texture contained.
///////////////////////////////////////////////////////
class DynamicImage : public Image
{
public:
    /**
     * Initialize class
     */
					DynamicImage(unsigned short Width = 256, unsigned short Height= 256, unsigned short Depth=32);
    /**
     * Destroy class
     */
	virtual			~DynamicImage();

    /**
     * Update any book-keeping that needs to be done 
     *  example: updating flipping chain, DynamicImage, etc
     */
    virtual bool    Tick();

    /**
     * Create the dynamic image
     *  @param _File    Ignored
     */
    virtual bool    Load(const std::string& _File);

    /**
     * Set the current texture to texture stage 
     *  @param _TexStage    Stage to set it to.
     */
    virtual bool    SetTextureStage(unsigned int _TexStage) = 0;
	virtual unsigned int	GetSortVal(){ return 'dynx'; };

	virtual bool	CopyBits(COLOR* ColorA) = 0;	//assume that we only deal with 32bit images.. sorry
protected:
	virtual bool	CreateTexture() = 0; 


	unsigned int			m_Depth;
};

#endif //_DYNAMIC_IMAGE_H_